#ifndef __MODULE__H__
#define __MODULE__H__

#include <string>
#include <QChar>
#include <QMetaType>
#include <QString>
#include "sconst.h"


#define UNKNOWN_MODULE_ID          -1
#define ALL_MODULE_ID              -2
#define UNKNOWN_MODULE_VERSION_ID  -1


class Module
{
  public:
    Module(const Module&);
    Module(int id = UNKNOWN_MODULE_ID, int inst = 0, std::string name = SC_UNKNOWN, int version = UNKNOWN_MODULE_VERSION_ID);
    virtual ~Module();


    void setModuleID(int);
    int  getModuleID() const;

    void setInstance(int);
    int  getInstance();

    void setModuleVersion(int);
    int  getModuleVersion();

    void setModuleName(const std::string&);
    std::string getModuleName();

    const QString data();
    const QString data() const;


    bool operator == (const Module&);

  protected:
    int         moduleid;
    int         instance;
    std::string module_name;
    int         module_version;
};

Q_DECLARE_METATYPE(Module)


#endif //__MODULE__H__
